package cn.t.facade.android.engine;


import cn.t.dto.device.CabinetHandlingOCDTO;
import cn.t.dto.device.PickUpCompleteDTO;
import cn.t.dto.device.vo.OpenCloseDTO;
import cn.t.dto.order.android.PickupDetailDTO;
import cn.t.enums.OptionTypeEnum;
import cn.t.vo.andriod.AndroidDeviceVO;
import cn.t.vo.user.UserSessionVO;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @author l
 */
public interface CabinetHandlingStrategy {
    PickupDetailDTO orderClose(CabinetHandlingOCDTO model, OptionTypeEnum optionTypeEnum, UserSessionVO sessionVO) throws ExecutionException, InterruptedException;

    String replenishmentGoodsOpen(CabinetHandlingOCDTO model) throws ExecutionException, InterruptedException;
    Boolean replenishmentGoodsClose(CabinetHandlingOCDTO model) throws ExecutionException, InterruptedException;

    /**
     * 领料补货开门
     *
     * @return
     */
    OpenCloseDTO openDoor(CabinetHandlingOCDTO model, OptionTypeEnum optionTypeEnum) throws ExecutionException, InterruptedException;

    List<PickupDetailDTO.DetailVO> pickUpComplete(PickUpCompleteDTO model, AndroidDeviceVO device);
    /**
     * 设备处理process类型对象
     */
    String getDeviceProcessType();
     String startPick(CabinetHandlingOCDTO req) throws ExecutionException, InterruptedException ;
}